Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>SQL/PSM</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/SQL%2FPSM"> <link href="../mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="../mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="../mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="../mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="../mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="../mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="../mw/noscript.css">
<link rel="stylesheet" type="text/css" href="../footer.css">
<link rel="stylesheet" type="text/css" href="../vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-SQL_PSM rootpage-SQL_PSM skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">SQL/PSM</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">SQL/PSM</th></tr><tr><th scope="row" class="infobox-label"><a href="../Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="../Multi-paradigm_programming_language" class="mw-redirect" title="Multi-paradigm programming language">Multi-paradigm</a></td></tr><tr><th scope="row" class="infobox-label">First&nbsp;appeared</th><td class="infobox-data">1996</td></tr><tr><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="../Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;"><a href="../SQL%3A2023" title="SQL:2023">SQL:2023</a>
</div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label"><a href="../Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="../Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform (multi-platform)</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Major <a href="../Programming_language_implementation" title="Programming language implementation">implementations</a></th></tr><tr><td colspan="2" class="infobox-full-data"><a href="../PL/SQL" title="PL/SQL">PL/SQL</a><br> <a href="../MySQL" title="MySQL">MySQL</a>/<a href="../MariaDB" title="MariaDB">MariaDB</a> <br>IBM's <a href="../SQL_PL" title="SQL PL">SQL PL</a><br><a href="../Mimer_SQL" title="Mimer SQL">Mimer SQL</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="../PL/SQL" title="PL/SQL">PL/SQL</a> <br> <a href="../Ada_(programming_language)" title="Ada (programming language)">Ada</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr></tbody></table>
<p><b>SQL/PSM</b> (<a href="../SQL" title="SQL">SQL</a>/Persistent Stored Modules) is an <a href="../ISO_standard" class="mw-redirect" title="ISO standard">ISO standard</a> mainly defining an extension of SQL with a <a href="../Procedural_language" class="mw-redirect" title="Procedural language">procedural language</a> for use in <a href="../Stored_procedure" title="Stored procedure">stored procedures</a>. Initially published in 1996 as an extension of <a href="../SQL-92" title="SQL-92">SQL-92</a> (ISO/IEC 9075-4:1996, a version sometimes called PSM-96 or even SQL-92/PSM<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>), SQL/PSM was later incorporated into the multi-part <a href="../SQL%3A1999" title="SQL:1999">SQL:1999</a> standard, and has been part 4 of that standard since then, most recently in <a href="../SQL%3A2023" title="SQL:2023">SQL:2023</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> The SQL:1999 part 4 covered less than the original PSM-96 because the SQL statements for defining, managing, and invoking routines were actually incorporated into part 2 SQL/Foundation, leaving only the procedural language itself as SQL/PSM.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> The SQL/PSM facilities are still optional as far as the SQL standard is concerned; most of them are grouped in Features P001-P008.
</p><p>SQL/PSM standardizes syntax and semantics for <a href="../Control_flow" title="Control flow">control flow</a>, <a href="../Exception_handling" title="Exception handling">exception handling</a> (called "condition handling" in SQL/PSM), local variables, assignment of expressions to variables and parameters, and (procedural) use of <a href="../Cursor_(databases)" title="Cursor (databases)">cursors</a>. It also defines an information schema (<a href="../Metadata" title="Metadata">metadata</a>) for stored procedures. SQL/PSM is one language in which <a href="../Method_(computer_programming)" title="Method (computer programming)">methods</a> for the SQL:1999 <a href="../Structured_type" title="Structured type">structured types</a> can be defined. The other is Java, via <a href="../SQL/JRT" title="SQL/JRT">SQL/JRT</a>.
</p><p>SQL/PSM is derived, seemingly directly, from Oracle's <a href="../PL/SQL" title="PL/SQL">PL/SQL</a>. Oracle developed PL/SQL and released it in 1991, basing the language on the <a href="../United_States_Department_of_Defense" title="United States Department of Defense">US Department of Defense</a>'s <a href="../Ada_(programming_language)" title="Ada (programming language)">Ada programming language</a>. However, Oracle has maintained a distance from the standard in its documentation. IBM's <a href="../SQL_PL" title="SQL PL">SQL PL</a> (used in DB2) and <a href="../Mimer_SQL" title="Mimer SQL">Mimer SQL</a>'s PSM<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> were the first two products officially implementing SQL/PSM. It is commonly thought that these two languages, and perhaps also <a href="../MySQL" title="MySQL">MySQL</a>/<a href="../MariaDB" title="MariaDB">MariaDB</a>'s procedural language, are closest to the SQL/PSM standard.
<sup id="cite_ref-HarrisonFeuerstein2008_6-0" class="reference"><a href="#cite_note-HarrisonFeuerstein2008-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
<sup id="cite_ref-MariaDB_Stored_Procedure_7-0" class="reference"><a href="#cite_note-MariaDB_Stored_Procedure-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> However, a <a href="../PostgreSQL" title="PostgreSQL">PostgreSQL</a> addon implements SQL/PSM<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> (alongside its other procedural languages like the PL/SQL-derived plpgsql), although it is not part of the core product.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p><a href="../Resource_Description_Framework" title="Resource Description Framework">RDF</a> functionality in <a href="../Virtuoso_Universal_Server" title="Virtuoso Universal Server">OpenLink Virtuoso</a> was developed entirely through SQL/PSM, combined with custom datatypes (e.g., <code>ANY</code> for handling URI and Literal relation objects), sophisticated indexing, and flexible physical storage choices (column-wise or row-wise).
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<p>The following implementations adopt the standard, but they are not 100% compatible to SQL/PSM:
</p><p><a href="../Open_source" title="Open source">Open source</a>:
</p>
<ul><li><a href="../HSQLDB" title="HSQLDB">HSQLDB</a> stored procedures and functions<sup id="cite_ref-SQL/PSM_routines_13-0" class="reference"><a href="#cite_note-SQL/PSM_routines-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup></li>
<li><a href="../MySQL" title="MySQL">MySQL</a> stored procedures<sup id="cite_ref-HarrisonFeuerstein2008_6-1" class="reference"><a href="#cite_note-HarrisonFeuerstein2008-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></li>
<li><a href="../MariaDB" title="MariaDB">MariaDB</a> stored procedures<sup id="cite_ref-MariaDB_Stored_Procedure_7-1" class="reference"><a href="#cite_note-MariaDB_Stored_Procedure-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li>
<li><a href="../Virtuoso_Universal_Server" title="Virtuoso Universal Server">OpenLink Virtuoso</a> SQL Procedures (VSP)<sup id="cite_ref-SQL_Procedure_Language_Guide_14-0" class="reference"><a href="#cite_note-SQL_Procedure_Language_Guide-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup></li>
<li><a href="../PostgreSQL" title="PostgreSQL">PostgreSQL</a> <a href="../PL/pgSQL" title="PL/pgSQL">PL/pgSQL</a></li></ul>
<p>Proprietary:
</p>
<ul><li><a href="../Oracle_Database" title="Oracle Database">Oracle</a> <a href="../PL/SQL" title="PL/SQL">PL/SQL</a></li>
<li><a href="../Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft</a> and <a href="../Sybase_ASE" class="mw-redirect" title="Sybase ASE">Sybase</a> <a href="../Transact-SQL" title="Transact-SQL">Transact-SQL</a></li>
<li>Invantive Procedural SQL<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup></li>
<li><a href="../Mimer_SQL" title="Mimer SQL">Mimer SQL</a> stored procedures <sup id="cite_ref-Mimer_SQL_PSM_16-0" class="reference"><a href="#cite_note-Mimer_SQL_PSM-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("../mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("../mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("../mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("../mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFGulutzan2015" class="citation cs2">Gulutzan, Peter (2015), <a rel="nofollow" class="external text" href="http://ocelot.ca/blog/blog/2015/01/15/stored-procedures-critiques-and-defences/"><i>Stored Procedures: critiques and defences</i></a></cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFEisenberg1996" class="citation journal cs1">Eisenberg, A. (1996). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F245882.245907">"New standard for stored procedures in SQL"</a>. <i>ACM SIGMOD Record</i>. <b>25</b> (4): <span class="nowrap">81–</span>88. <a href="../Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F245882.245907">10.1145/245882.245907</a></span>. <a href="../S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:13023149">13023149</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation cs2">"SQL:2023", <a rel="nofollow" class="external text" href="https://www.iso.org/standard/76585.html"><i>Catalogue</i></a> <span class="cs1-format">(webshop)</span>, ISO</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFMeltonSimon2002" class="citation book cs1">Melton, Jim; Simon, Alan R (2002). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/sql1999understan0000melt/page/541"><i>SQL: 1999</i></a></span>. Morgan Kaufmann. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/sql1999understan0000melt/page/541">541–42</a>. <a href="../ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-55860-456-8</bdi>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mimer.com/article/stored-procedures-in-mimer-sql/">"Stored Procedures in Mimer SQL"</a>.</cite></span>
</li>
<li id="cite_note-HarrisonFeuerstein2008-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-HarrisonFeuerstein2008_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-HarrisonFeuerstein2008_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFHarrisonFeuerstein2008" class="citation book cs1">Harrison, Guy; Feuerstein, Steven (2008). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=YpeP0ok0cO4C&amp;pg=PT75"><i>MySQL Stored Procedure Programming</i></a>. O'Reilly. p.&nbsp;49. <a href="../ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-596-10089-6</bdi>.</cite></span>
</li>
<li id="cite_note-MariaDB_Stored_Procedure-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-MariaDB_Stored_Procedure_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-MariaDB_Stored_Procedure_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://mariadb.com/kb/en/library/stored-procedures/">"Stored Procedures"</a>. <i>MariaDB KnowledgeBase</i>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="https://github.com/okbob/plpsm0"><i>plpsm0</i></a> <span class="cs1-format">(git)</span> (repository), 7 July 2020</cite>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="http://www.postgresql.org/message-id/1305291347.14548.13.camel@jara.office.nic.cz"><i>Announce</i></a>, PostgreSQL, May 2011</cite>.</span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.postgresql.org/message-id/CAFj8pRDWFdcjNSnwQB_3j1-rMO6b8=TmLTNBvDCSpRrOW2Dfeg@mail.gmail.com">"PostgreSQL: Proposal: PL/pgPSM for 9.3"</a>. <i>www.postgresql.org</i>. 22 February 2012.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="http://postgres.cz/wiki/SQL/PSM_Manual"><i>SQL/PSM</i></a> <span class="cs1-format">(wigl)</span> (manual), PostgreSQL, 2008</cite>.</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="http://www.postgresql.org/docs/9.2/static/features.html">"SQL Conformance"</a>, <i>Documentation</i> (9.2&nbsp;ed.), PostgreSQL</cite>.</span>
</li>
<li id="cite_note-SQL/PSM_routines-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-SQL/PSM_routines_13-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_psm_routines">"Chapter 8. SQL-Invoked Routines"</a>. <i>hsqldb.org</i>.</cite></span>
</li>
<li id="cite_note-SQL_Procedure_Language_Guide-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-SQL_Procedure_Language_Guide_14-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://docs.openlinksw.com/virtuoso/ch-sqlprocedures/">"Chapter 11. SQL Procedure Language Guide"</a>. <i>docs.openlinksw.com</i>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://documentation.invantive.com/2017R2/invantive-sql-grammar/invantive-sql-grammar-17.30.html#pSqlBlock">"Invantive SQL v2.0 Grammar"</a>. <i>Invantive</i>.</cite></span>
</li>
<li id="cite_note-Mimer_SQL_PSM-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-Mimer_SQL_PSM_16-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.mimer.com/MimerSqlManual/latest/Manuals/PSM/PSM.htm">"Mimer SQL Stored Procedures"</a>. <i>docs.mimer.com</i>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li>Jim Melton, <i>Understanding SQL's Stored Procedures: A Complete Guide to SQL/PSM</i>, Morgan Kaufmann Publishers, 1998, <a href="../ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-55860-461-8</bdi></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r920966791">
/* start https://en.wikipedia.org/ */


.mw-parser-output span.smallcaps{font-variant:small-caps}.mw-parser-output span.smallcaps-smaller{font-size:85%}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="SQL70" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="SQL70" style="font-size:114%;margin:0 4em"><a href="../SQL" title="SQL">SQL</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Versions</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="../SEQUEL" class="mw-redirect" title="SEQUEL">SEQUEL</a></li>
<li>SQL-86</li>
<li>SQL-89</li>
<li><a href="../SQL-92" title="SQL-92">SQL-92</a></li>
<li><a href="../SQL%3A1999" title="SQL:1999">SQL:1999</a></li>
<li><a href="../SQL%3A2003" title="SQL:2003">SQL:2003</a></li>
<li><a href="../SQL%3A2006" title="SQL:2006">SQL:2006</a></li>
<li><a href="../SQL%3A2008" title="SQL:2008">SQL:2008</a></li>
<li><a href="../SQL%3A2011" title="SQL:2011">SQL:2011</a></li>
<li><a href="../SQL%3A2016" title="SQL:2016">SQL:2016</a></li>
<li><a href="../SQL%3A2023" title="SQL:2023">SQL:2023</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="../SQL_reserved_words" class="mw-redirect" title="SQL reserved words">Keywords</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><span class="smallcaps"><a href="../Alias_(SQL)" title="Alias (SQL)">As</a></span></li>
<li><span class="smallcaps"><a href="../Case_(SQL)" class="mw-redirect" title="Case (SQL)">Case</a></span></li>
<li><span class="smallcaps"><a href="../Create_(SQL)" class="mw-redirect" title="Create (SQL)">Create</a></span></li>
<li><span class="smallcaps"><a href="../Delete_(SQL)" title="Delete (SQL)">Delete</a></span></li>
<li><span class="smallcaps"><a href="../From_(SQL)" title="From (SQL)">From</a></span></li>
<li><span class="smallcaps"><a href="../Group_by_(SQL)" title="Group by (SQL)">Group by</a></span></li>
<li><span class="smallcaps"><a href="../Having_(SQL)" title="Having (SQL)">Having</a></span></li>
<li><span class="smallcaps"><a href="../Insert_(SQL)" title="Insert (SQL)">Insert</a></span></li>
<li><span class="smallcaps"><a href="../Join_(SQL)" title="Join (SQL)">Join</a></span></li>
<li><span class="smallcaps"><a href="../Merge_(SQL)" title="Merge (SQL)">Merge</a></span></li>
<li><span class="smallcaps"><a href="../Null_(SQL)" title="Null (SQL)">Null</a></span></li>
<li><span class="smallcaps"><a href="../Order_by" title="Order by">Order by</a></span></li>
<li><span class="smallcaps"><a href="../Window_function_(SQL)" title="Window function (SQL)">Over</a></span></li>
<li><span class="smallcaps"><a href="../Prepare_(SQL)" class="mw-redirect" title="Prepare (SQL)">Prepare</a></span></li>
<li><span class="smallcaps"><a href="../Select_(SQL)" title="Select (SQL)">Select</a></span></li>
<li><span class="smallcaps"><a href="../Truncate_(SQL)" title="Truncate (SQL)">Truncate</a></span></li>
<li><span class="smallcaps"><a href="../Set_operations_(SQL)" title="Set operations (SQL)">Union</a></span></li>
<li><span class="smallcaps"><a href="../Update_(SQL)" title="Update (SQL)">Update</a></span></li>
<li><span class="smallcaps"><a href="../With_(SQL)" class="mw-redirect" title="With (SQL)">With</a></span></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="../Edgar_F._Codd" title="Edgar F. Codd">Edgar Codd</a></li>
<li><a href="../Relational_database" title="Relational database">Relational database</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">ISO/IEC SQL parts</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Framework</li>
<li>Foundation</li>
<li><a href="../SQL/CLI" class="mw-redirect" title="SQL/CLI">Call-Level Interface</a></li>

<li><a href="../SQL/MED" title="SQL/MED">Management of External Data</a></li>
<li><a href="../SQL/OLB" title="SQL/OLB">Object Language Bindings</a></li>
<li><a href="../SQL/Schemata" title="SQL/Schemata">Information and Definition Schemas</a></li>
<li><a href="../SQL/JRT" title="SQL/JRT">SQL Routines and Types for the Java Programming Language</a></li>
<li><a href="../SQL/XML" title="SQL/XML">XML-Related Specifications</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2023-06-03" href="https://en.wikipedia.org/wiki/?title=SQL%2FPSM&amp;oldid=1158396221">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>